﻿Public Class Form1
  Public pagina As Integer = 1

  Private Sub Form1_Load(
        ByVal sender As System.Object,
        ByVal e As System.EventArgs) _
        Handles MyBase.Load
    documento = New  _
       System.Drawing.Printing.PrintDocument
    InizializzaPrintPreviewDialog()
    Dim f As New Font("Arial", 12)
    Me.TextBox1.Font = f
    Me.ToolStripStatusLabel1.Font = f
  End Sub

  ' inizializza il controllo
  Private Sub InizializzaPrintPreviewDialog()
    ' imposta dimensione, posizione e nome
    Me.PrintPreviewDialog1.ClientSize =
       New System.Drawing.Size(400, 300)
    Me.PrintPreviewDialog1.Location =
       New System.Drawing.Point(29, 29)
    Me.PrintPreviewDialog1.Name =
       "PrintPreviewDialog1"
    ' imposta la dimensione minima della
    ' finestra di dialogo
    Me.PrintPreviewDialog1.MinimumSize =
       New System.Drawing.Size(375, 250)
    ' imposta la proprietà UseAntiAlias a
    ' True per permettere al sistema
    ' operativo di utilizzare l'effetto
    ' antialiasing
    Me.PrintPreviewDialog1.UseAntiAlias =
       True
  End Sub

  Private Sub document_PrintPage(
        ByVal sender As Object,
        ByVal e As  _
          System.Drawing.Printing.PrintPageEventArgs) _
        Handles documento.PrintPage
    ' Il seguente codice prepara un semplice
    ' messaggio sul documento creato nella
    ' finestra di dialogo
    Dim testo As String = ""
    Dim printFont As New  _
      System.Drawing.Font("Arial", 12)
    If pagina = 1 Then
      testo = Environment.NewLine &
         "Sito dell'autore: " &
         "www.deghetto.it"
      printFont = New System.Drawing.Font _
         ("Arial", 25,
         System.Drawing.FontStyle.Regular)
      e.Graphics.DrawString(testo,
         printFont,
         System.Drawing.Brushes.Black,
         0, 0)
      pagina = 2
      e.HasMorePages = True
    ElseIf pagina = 2 Then
      testo = Me.TextBox1.Text
      printFont = New System.Drawing.Font _
         ("Arial", 10,
         System.Drawing.FontStyle.Regular)
      Dim rettangolo As New RectangleF(
         0, 100, 800, 1100)
      e.Graphics.DrawString(
         testo, printFont,
         System.Drawing.Brushes.Black,
         rettangolo)
      pagina = 1
      e.HasMorePages = False
    Else
      pagina = 1
      e.HasMorePages = False
    End If
  End Sub

  Private Sub ApriFileToolStripMenuItem_Click(
        ByVal sender As System.Object,
        ByVal e As System.EventArgs) _
        Handles ApriFileToolStripMenuItem.Click
    OpenFileDialog1.InitialDirectory =
       Me.ToolStripStatusLabel1.Text
    OpenFileDialog1.Filter =
       "file di testo (*.txt)|*.txt|" &
       "tutti i file (*.*)|*.*"
    OpenFileDialog1.FilterIndex = 1
    OpenFileDialog1.RestoreDirectory = True

    If OpenFileDialog1.ShowDialog() =
       Windows.Forms.DialogResult.OK Then
      ' codice per leggere il contenuto del file
      Me.ToolStripStatusLabel1.Text = OpenFileDialog1.FileName
      Me.TextBox1.Text =
        My.Computer.FileSystem.ReadAllText(
          "" & OpenFileDialog1.FileName)
    End If
  End Sub

  Private Sub SvuotaCasellaDitestoToolStripMenuItem_Click(
        ByVal sender As System.Object,
        ByVal e As System.EventArgs) _
        Handles SvuotaCasellaDiTestoToolStripMenuItem.Click
    Me.TextBox1.Text = ""
  End Sub

  Private Sub SalvaToolStripMenuItem_Click(
        ByVal sender As System.Object,
        ByVal e As System.EventArgs) _
        Handles SalvaToolStripMenuItem.Click
    SaveFileDialog1.InitialDirectory =
       Me.ToolStripStatusLabel1.Text
    SaveFileDialog1.Filter =
       "file di testo (*.txt)|*.txt|" &
       "tutti i file (*.*)|*.*"
    SaveFileDialog1.FilterIndex = 2
    SaveFileDialog1.RestoreDirectory = True

    If SaveFileDialog1.ShowDialog() =
       Windows.Forms.DialogResult.OK Then
      My.Computer.FileSystem.WriteAllText(
        "" & SaveFileDialog1.FileName,
        Me.TextBox1.Text, False)
    End If
  End Sub

  Private Sub SelezionacartellaToolStripMenuItem_Click(
        ByVal sender As System.Object,
        ByVal e As System.EventArgs) _
        Handles SelezionacartellaToolStripMenuItem.Click
    FolderBrowserDialog1.SelectedPath =
       Me.ToolStripStatusLabel1.Text
    If FolderBrowserDialog1.ShowDialog() =
          Windows.Forms.DialogResult.OK Then
      Me.ToolStripStatusLabel1.Text =
         FolderBrowserDialog1.SelectedPath
    End If
  End Sub

  Private Sub FontToolStripMenuItem_Click(
        ByVal sender As System.Object,
        ByVal e As System.EventArgs) _
        Handles FontToolStripMenuItem.Click
    FontDialog1.ShowColor = True
    FontDialog1.Font = TextBox1.Font
    FontDialog1.Color = TextBox1.ForeColor

    If FontDialog1.ShowDialog() <>
          Windows.Forms.DialogResult.Cancel Then
      TextBox1.Font = FontDialog1.Font
      ToolStripStatusLabel1.Font = FontDialog1.Font
      TextBox1.ForeColor = FontDialog1.Color
      ToolStripStatusLabel1.ForeColor = FontDialog1.Color
    End If
  End Sub

  Private Sub ColorToolStripMenuItem_Click(
        ByVal sender As System.Object,
        ByVal e As System.EventArgs) _
        Handles ColorToolStripMenuItem.Click
    ' seleziona il colore iniziale uguale al
    ' colore di TextBox1:
    ColorDialog1.Color = TextBox1.BackColor
    ' modifica il colore del testo di TextBox1
    ' con il colore selezionato:
    If (ColorDialog1.ShowDialog() =
          Windows.Forms.DialogResult.OK) Then
      TextBox1.ForeColor = ColorDialog1.Color
    End If
  End Sub

  Private Sub ImpostaPaginaToolStripMenuItem_Click(
        ByVal sender As System.Object,
        ByVal e As System.EventArgs) _
        Handles _
        ImpostaPaginaToolStripMenuItem.Click
    ' inizializza il controllo con le
    ' impostazioni attuali della stampante
    ' predefinita
    PageSetupDialog1.PageSettings =
       New System.Drawing.Printing.PageSettings
    PageSetupDialog1.PrinterSettings = New  _
       System.Drawing.Printing.PrinterSettings
    ' apre la finestra di dialogo
    PageSetupDialog1.ShowDialog()
  End Sub

  Private Sub AnteprimaDiStampaToolStripMenuItem_Click(
        ByVal sender As System.Object,
        ByVal e As System.EventArgs) _
        Handles _
        AnteprimaDiStampaToolStripMenuItem.Click
    ' imposta la proprietà
    ' PrintPreviewDialog.Document all'oggetto
    ' PrintDocument selezionato dall'utente
    PrintPreviewDialog1.Document = documento
    ' chiama il metodo ShowDialog che scatenerà
    ' l'evento PrintPage del documento
    PrintPreviewDialog1.ShowDialog()
  End Sub

  Private Sub AnteprimaSuForm2ToolStripMenuItem_Click(
        ByVal sender As System.Object,
        ByVal e As System.EventArgs) _
        Handles _
        AnteprimaSuForm2ToolStripMenuItem.Click
    ' imposta la proprietà
    ' PrintPreviewDialog.Document all'oggetto
    ' PrintDocument selezionato dall'utente
    Form2.PrintPreviewControl1.Document =
       documento
    ' chiama il metodo ShowDialog che scatenerà
    ' l'evento PrintPage del documento
    Form2.Show()
  End Sub

  Private Sub StampaToolStripMenuItem_Click(
        ByVal sender As System.Object,
        ByVal e As System.EventArgs) _
        Handles StampaToolStripMenuItem1.Click
    ' permette all'utente di selezionare
    ' l'intervallo delle pagine da stampare
    PrintDialog1.AllowSomePages = True

    ' imposta la proprietà Document a
    ' PrintDocument
    PrintDialog1.Document = documento

    ' se l'utente preme il pulsante OK 
    ' viene stampato il documento
    If (PrintDialog1.ShowDialog() =
          Windows.Forms.DialogResult.OK) Then
      documento.Print()
    End If
  End Sub

  Private Sub InformazioniToolStripMenuItem_Click(
        ByVal sender As System.Object,
        ByVal e As System.EventArgs) _
        Handles _
        InformazioniToolStripMenuItem.Click
    MessageBox.Show("Editor di file " &
       "di testo " & Environment.NewLine &
       "by Mario De Ghetto (www.deghetto.it)")
  End Sub
End Class
